package pe.emp.solbrillante.sales.service;


import java.sql.*;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import pe.emp.solbrillante.sales.bean.Paquete;
import pe.emp.solbrillante.sales.bean.PaqueteCompra;
import pe.emp.solbrillante.sales.bean.Presentacion;



import pe.emp.solbrillante.sales.bean.Producto;
import pe.emp.solbrillante.sales.bean.Proveedor;
import pe.emp.solbrillante.sales.bean.Tipo_producto;
import pe.emp.solbrillante.sales.bean.Unidad_medida;
import pe.emp.solbrillante.sales.bean.Usuarios;

import pe.emp.solbrillante.sales.dao.DAOFactory;
import pe.emp.solbrillante.sales.dao.PaqueteDAO;
import pe.emp.solbrillante.sales.dao.PresentacionDAO;
import pe.emp.solbrillante.sales.dao.ProductoDAO;
import pe.emp.solbrillante.sales.dao.ProveedorDAO;
import pe.emp.solbrillante.sales.dao.Tipo_productoDAO;
import pe.emp.solbrillante.sales.dao.Unidad_medidaDAO;
import pe.emp.solbrillante.sales.dao.UsuarioDAO;

public final  class SalesService {
    public static final int DB_TYPE = DAOFactory.MY_SQL; //aqui defini el tipo de coneccion
	//private Product products[];
	private ArrayList<Producto> productos = new ArrayList<Producto>() ;
	private ArrayList<Proveedor> proveedores = new ArrayList<Proveedor>();

	public int addProduct(Producto producto ,String unidades_paquete, String subtotal , int cantidad){
	     DAOFactory daoFactory = DAOFactory.createFactory(DB_TYPE);
                        ProductoDAO productDAO = daoFactory.getDAOProducto();
                        return productDAO.insert(producto ,unidades_paquete,  subtotal , cantidad);

	}
	public int addClient(Proveedor proveedor){
	     DAOFactory daoFactory = DAOFactory.createFactory(DB_TYPE);
                        ProveedorDAO proveedorDAO = daoFactory.getDAOProveedor();
                        return proveedorDAO.insert(proveedor);
	}



        public void updateProduct(Object[] fila){
                        DAOFactory daoFactory = DAOFactory.createFactory(DB_TYPE);
                        ProductoDAO productoDAO = daoFactory.getDAOProducto();
                        productoDAO.update(fila);
        }


        
        
        public ArrayList<Producto> queryProductsLikeName(String nombre){
            DAOFactory daoFactory = DAOFactory.createFactory(SalesService.DB_TYPE);
            ProductoDAO productoDAO =  daoFactory.getDAOProducto(); //polimorfismo            
            return productoDAO.queryLikeName(nombre); //polimorfismo
        }
        
        public final ArrayList<Proveedor> queryAllProveedores(){
            DAOFactory daoFactory = DAOFactory.createFactory(SalesService.DB_TYPE);
            ProveedorDAO proveedorDAO =  daoFactory.getDAOProveedor(); //polimorfismo            
            return proveedorDAO.queryAll(); //polimorfismo
        }
        
        public ArrayList<Producto> queryAllProductos(){
            DAOFactory daoFactory = DAOFactory.createFactory(SalesService.DB_TYPE);
            ProductoDAO productoDAO =  daoFactory.getDAOProducto(); //polimorfismo            
            return productoDAO.queryAll(); //polimorfismo
        }
        
        public ArrayList<Object> queryAllProductoDetalle(int id){
            DAOFactory daoFactory = DAOFactory.createFactory(SalesService.DB_TYPE);
            ProductoDAO productoDAO =  daoFactory.getDAOProducto(); //polimorfismo         
            
            return productoDAO.queryAllDetalle(id); //polimorfismo
        }
        
        public void queryDeleteProducto(int idproducto){
            DAOFactory daoFactory = DAOFactory.createFactory(SalesService.DB_TYPE);
            ProductoDAO productoDAO =  daoFactory.getDAOProducto(); //polimorfismo         
            
                   productoDAO.delete(idproducto); //polimorfismo
        }
                
        
        
        public ArrayList<Usuarios> queryAllUsuarios(){
            DAOFactory daoFactory = DAOFactory.createFactory(SalesService.DB_TYPE);
            UsuarioDAO usuarioDAO =  daoFactory.getDAOUsuario(); //polimorfismo            
            return usuarioDAO.queryAll(); //polimorfismo
        }
        
        public ArrayList<Unidad_medida> queryAllUnidad_medidas(){
            DAOFactory daoFactory = DAOFactory.createFactory(SalesService.DB_TYPE);
            Unidad_medidaDAO unidad_medidaDAO =  daoFactory.getDAOUnidad_medida(); //polimorfismo            
            return unidad_medidaDAO.queryAll(); //polimorfismo
        }  
        
        public ArrayList<Tipo_producto> queryAllTipo_productos(){
            DAOFactory daoFactory = DAOFactory.createFactory(SalesService.DB_TYPE);
            Tipo_productoDAO tipo_productoDAO =  daoFactory.getDAOTipo_producto(); //polimorfismo            
            return tipo_productoDAO.queryAll(); //polimorfismo
        }   
        
        public ArrayList<Presentacion> queryAllPresentaciones(){
            DAOFactory daoFactory = DAOFactory.createFactory(SalesService.DB_TYPE);
            PresentacionDAO presentacionDAO =  daoFactory.getDAOPresentacion(); //polimorfismo            
            return presentacionDAO.queryAll(); //polimorfismo
        }   
        
        
        public ArrayList<Paquete> queryPaquetesxProveedor(int idprov){
            DAOFactory daoFactory = DAOFactory.createFactory(SalesService.DB_TYPE);
            PaqueteDAO paqueteDAO =  daoFactory.getDAOPaquete(); //polimorfismo            
            return paqueteDAO.queryPaquetesxProveedor(idprov); //no polimorfismo???????????
        }
        
        public ArrayList<PaqueteCompra> queryPaquetesxProveedorS(int idprov){
            DAOFactory daoFactory = DAOFactory.createFactory(SalesService.DB_TYPE);
            PaqueteDAO paqueteDAO =  daoFactory.getDAOPaquete(); //polimorfismo            
            return paqueteDAO.queryPaquetesxProveedorS(idprov); //no polimorfismo???????????
        }

    public int queryInsertaCompraPaquete(int cod, int can) {
            DAOFactory daoFactory = DAOFactory.createFactory(SalesService.DB_TYPE);
            PaqueteDAO paqueteDAO =  daoFactory.getDAOPaquete(); //polimorfismo            
            return paqueteDAO.queryInsertaCompraPaquete(cod,can); //no polimorfismo???????????
        
    }
}
